/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.svh.Servicios;

import com.svh.Dao.ClienteDao;
import com.svh.Dao.Impl.ClienteDaoImpl;
import com.svh.Entidad.Cliente;
import com.svh.Hibernate.HibernateConexion;
import com.svh.Utils.IConexion;
import com.svh.Utils.Utilitario;

/**
 *
 * @author Luis Alonso Ballena Garcia
 */
public class ClienteServicio {
    IConexion conexion;
    ClienteDao<Cliente> daoCliente;

    public ClienteServicio() {
        conexion = new HibernateConexion();
        daoCliente = new ClienteDaoImpl(conexion);
    }
    
    
    public void registrarCliente(Cliente cliente){
        conexion.beginTransaccion();
        if(cliente.getNatural() != null)
        {
            cliente.getNatural().setPadre(cliente);
            
        }else if(cliente.getJuridico() != null) {
            cliente.getJuridico().setPadre(cliente);
        }
        daoCliente.agregar(cliente);
        conexion.closeTransaccion();
        Utilitario.enviarMensajeGlobalValido("Se ha registrado correctamente");
    }
    
    public Cliente obtenerClientePorId(Integer id)
    {
        Cliente aux = null;
        conexion.beginConexion();
        aux = daoCliente.buscarPorId(Cliente.class, id);
        conexion.closeConexion();
        return aux;
    }
    
    public void actualizarCliente(Cliente cliente)
    {
        conexion.beginTransaccion();
        if(cliente.getNatural() != null)
        {
            cliente.getNatural().setPadre(cliente);
            
        }else if(cliente.getJuridico() != null) {
            cliente.getJuridico().setPadre(cliente);
        }
        daoCliente.actualizar(cliente);
        conexion.closeTransaccion();
        Utilitario.enviarMensajeGlobalValido("Se ha actualizado correctamente");
    }
    
    
}
